Skip to content

Conversation

viva-jinyi
Copy link
Member

@viva-jinyi viva-jinyi commented Oct 1, 2025

Summary

Added custom scrollbar styling for SelectBox components (SingleSelect and MultiSelect) to improve visual consistency across the application.

Changes

  • 🎨 Added custom scrollbar CSS with cross-browser support (WebKit, Firefox)
  • 🎨 Implemented dark theme support for scrollbars
  • 🎨 Applied .custom-scrollbar class to SingleSelect and MultiSelect components
  • 🎨 Added CSS variables for scrollbar theming

Implementation Details

  • Custom scrollbar size: 10px
  • Light theme: Gray scrollbar on white track
  • Dark theme: Dark gray scrollbar on charcoal track
  • Smooth hover transitions for better UX

Browser Support

  • ✅ Chrome/Edge (WebKit scrollbar)
  • ✅ Firefox (scrollbar-width and scrollbar-color)
  • ✅ Safari (WebKit scrollbar)

Screenshots

The custom scrollbar provides a more modern and consistent look across the application, especially in dropdown menus.

Testing

  • Test scrollbar appearance in light theme
  • Test scrollbar appearance in dark theme
  • Verify functionality in Chrome/Edge
  • Verify functionality in Firefox
  • Verify functionality in Safari

Before

before-dark before-light

After

after-dark after-light

┆Issue is synchronized with this Notion page by Unito

@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Oct 1, 2025
Copy link

github-actions bot commented Oct 1, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 10/12/2025, 05:29:21 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

Copy link

github-actions bot commented Oct 1, 2025

🎭 Playwright Test Results

Some tests failed

⏰ Completed at: 10/12/2025, 05:45:13 AM UTC

📈 Summary

  • Total Tests: 490
  • Passed: 451 ✅
  • Failed: 2 ❌
  • Flaky: 7 ⚠️
  • Skipped: 30 ⏭️

📊 Test Reports by Browser

  • chromium: View Report • ✅ 442 / ❌ 2 / ⚠️ 7 / ⏭️ 30
  • chromium-2x: View Report • ✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • chromium-0.5x: View Report • ✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • mobile-chrome: View Report • ✅ 6 / ❌ 0 / ⚠️ 0 / ⏭️ 0

🎉 Click on the links above to view detailed test results for each browser configuration.

@christian-byrne christian-byrne added the claude-review Add to trigger a PR code review from Claude Code label Oct 1, 2025
Copy link

@claude claude bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comprehensive PR Review

This review is generated by Claude. It may not always be accurate, as with human reviewers. If you believe that any of the comments are invalid or incorrect, please state why for each. For others, please implement the changes in one way or another.

Review Summary

PR: [Style] Add custom scrollbar styling for SelectBox components (#5879)
Impact: 76 additions, 2 deletions across 3 files

Issue Distribution

  • Critical: 0
  • High: 1
  • Medium: 4
  • Low: 2

Category Breakdown

  • Architecture: 3 issues
  • Code Quality: 3 issues
  • Performance: 1 issue

Key Findings

Architecture & Design

The implementation follows a reasonable approach for cross-browser scrollbar styling, but has some architectural inconsistencies. The PR introduces custom CSS components rather than following the existing Tailwind utility pattern used by scrollbar-hide. Additionally, the migration is incomplete - 8 other files still use scrollbar-hide, creating inconsistency across the application.

Code Quality Considerations

The main quality concern is the use of an undefined CSS color token (--color-white) which will cause fallbacks to browser defaults. The scrollbar hover behavior is also inconsistent in light theme where hover and normal states use the same color.

Performance Impact

The CSS includes scrollbar-gutter: stable both-edges which could cause layout shifts on browsers with inconsistent support. However, this is marked as low priority since it's ignored on unsupported browsers.

Integration Points

The Vue component changes are clean and maintain proper separation of concerns. The class replacement from scrollbar-hide to custom-scrollbar follows Vue best practices.

Positive Observations

  • Comprehensive cross-browser support with both WebKit and Firefox implementations
  • Well-documented CSS with clear usage instructions
  • Clean Vue component implementation with proper class replacement
  • Good use of CSS custom properties for theming
  • Responsive design considerations for dark theme support

References

Next Steps

  1. Address the undefined color token issue (high priority)
  2. Consider completing the scrollbar migration across all components
  3. Evaluate whether to implement as Tailwind utility for consistency
  4. Test scrollbar behavior across target browsers
  5. Fix hover state inconsistency in light theme

This is a comprehensive automated review. The scrollbar implementation provides good user experience improvements, but addressing the color token and architectural consistency issues will improve maintainability.

@viva-jinyi viva-jinyi force-pushed the style/custom-scrollbar branch from 6778d43 to b7316ae Compare October 10, 2025 12:44
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Oct 10, 2025
Copy link
Contributor

@arjansingh arjansingh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The scrollbar-gutter comment is incorrect, but i think the other Claude comments are worth investigating.

@viva-jinyi viva-jinyi force-pushed the style/custom-scrollbar branch from b7316ae to ffb8d1b Compare October 11, 2025 11:38
@viva-jinyi
Copy link
Member Author

I wanted to make all browsers display an identical scrollbar style controlled entirely by CSS, but it turns out Safari doesn’t allow a fully consistent implementation.
The track background color and the left divider line come from Safari’s overlay scroll behavior and its native rendering logic, so they can’t be completely removed with CSS.

To achieve pixel-perfect consistency across browsers, the only real option would be to hide the native scrollbar and build a custom overlay scrollbar (JS-based).

What do you all think?
Should we just remove the scrollbar entirely in SelectBox for simplicity, or keep this approach even if Safari’s rendering isn’t 100% identical?
스크린샷 2025-10-11 오후 9 40 48
스크린샷 2025-10-11 오후 9 40 44

@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Oct 11, 2025
@christian-byrne
Copy link
Contributor

christian-byrne commented Oct 11, 2025

@viva-jinyi Have you done custom scrollbar before? I have found it to be quite hard when not using a library, as there are many edge cases and relying on layout is hard.

If we can't reach a satisfying solution here, should we try the other options from previous discussions?

@viva-jinyi viva-jinyi force-pushed the style/custom-scrollbar branch from 2e90106 to 6284260 Compare October 12, 2025 05:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claude-review Add to trigger a PR code review from Claude Code size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants